www.gusucode.com > VC++ 大富翁4_大富翁游戏源码-源码程序 > VC++ 大富翁4_大富翁游戏源码-源码程序/code/R4/R4/SmallMap.cpp
//Download by http://www.NewXing.com // SmallMap.cpp: implementation of the CSmallMap class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "R4.h" #include "SmallMap.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CSmallMap::CSmallMap()//构造 { //设置作用区 m_MyRect.top = 280; m_MyRect.bottom = 480; m_MyRect.left = 440; m_MyRect.right = 640; } CSmallMap::~CSmallMap()//析构 { //释放设备上下文和位图 m_MyDC.DeleteDC(); m_MyBitmap.DeleteObject(); } void CSmallMap::Draw( CDC * pDC )//显示小土地图的方法 { CBrush brush, * pOldBrush;//定义一个刷子 CPen pen, * pOldPen;//定义一只画笔 //画小土地图 theApp.m_TmpScreenDC.BitBlt( m_MyRect.left, m_MyRect.top, m_MyRect.right - m_MyRect.left, m_MyRect.bottom - m_MyRect.top, & m_MyDC, 0, 0, SRCCOPY ); //画地图上的物体 theApp.m_EntityRoadList.DrawOnSmallMap( pDC ); //创建刷子和画笔 brush.CreateStockObject( NULL_BRUSH );//创建一个空刷子 pOldBrush = theApp.m_TmpScreenDC.SelectObject( & brush ); pen.CreatePen( PS_SOLID,1,RGB( 255, 0, 0 ) ); pOldPen = theApp.m_TmpScreenDC.SelectObject( & pen); //画矩形 theApp.m_TmpScreenDC.Rectangle( m_ptCoordinate.x - 17, m_ptCoordinate.y - 20, m_ptCoordinate.x + 17, m_ptCoordinate.y + 20 ); brush.DeleteObject(); pen.DeleteObject(); theApp.m_TmpScreenDC.SelectObject( pOldPen ); theApp.m_TmpScreenDC.SelectObject( pOldBrush ); } void CSmallMap::Init_DC_BM( CDC * pDC )//初始化 { //装载图片 m_MyDC.CreateCompatibleDC( pDC ); m_MyBitmap.m_hObject = (HBITMAP)::LoadImage( NULL, "img\\SmallMap.bmp", IMAGE_BITMAP, m_MyRect.right - m_MyRect.left, m_MyRect.bottom - m_MyRect.top, LR_LOADFROMFILE ); m_MyDC.SelectObject( m_MyBitmap ); //设置矩形的位置 m_ptCoordinate.x = (int)(theApp.m_pPer->m_ptCoordinate.x * 5.0 / 66.0) + 440; m_ptCoordinate.y = (int)(theApp.m_pPer->m_ptCoordinate.y / 11.0) + 280; } bool CSmallMap::IsOnMe( CPoint point )//点是否在我的作用区上 { if( CTool::PointInRect(point, m_MyRect) ) { return true; } return false; } void CSmallMap::MoveRectangle( CPoint ptPos )//移动矩形 { m_ptCoordinate.x = ptPos.x; m_ptCoordinate.y = ptPos.y; //判断边界 if( m_ptCoordinate.x < 457 )m_ptCoordinate.x = 457; if( m_ptCoordinate.y < 300 )m_ptCoordinate.y = 300; if( m_ptCoordinate.x > 627 )m_ptCoordinate.x = 627; if( m_ptCoordinate.y > 460 )m_ptCoordinate.y = 460; } void CSmallMap::ReadFromStream( CDC * pDC, CArchive & ar )//读取小土地图的信息 { ar >> m_ptCoordinate.x; ar >> m_ptCoordinate.y; } int CSmallMap::ToolName( CPoint point )//小土地图所用的工具 { if( IsOnMe( point) ) { return CTool::MoveBigMap; } return CTool::NoTool; } void CSmallMap::WriteToStream( CArchive & ar )//保存小地图的信息 { ar << m_ptCoordinate.x; ar << m_ptCoordinate.y; }